// 导入数据库数据
import { arr } from "../db/studentDb.js";
import url from "url";

// 创建函数（查询所有学生）
async function students(ctx, next) {
  // 拿到 页码 和 每页展示数
  const queryUrl = url.parse(ctx.url, true);
  // 默认的页码
  const page = queryUrl.query.page || 1;

  // 默认的每页展示数
  const limit = queryUrl.query.limit || 10;

  // 总页码
  const totalPages = Math.ceil(arr.length / limit);

  // 创建新的数组（用于分页返回对象列表）
  const newArr = [];

  // 判断页码 和 展示数是否在范围里
  if (page <= totalPages && limit <= arr.length) {
    // 起始索引
    const nowIndex = (page - 1) * limit;
    // 结尾索引
    let maxIndex = +nowIndex + +limit;

    // 确保结尾索引不会超过 arr 的长度
    if (maxIndex > arr.length) {
      maxIndex = arr.length;
    }

    // 返回分页的内容
    for (let i = nowIndex; i < maxIndex; i++) {
      newArr.push(arr[i]);
    }
  } else {
    // 默认展示 1-10 条数据
    for (let i = 0; i < 10; i++) {
      newArr.push(arr[i]);
    }

    // 路径不对就重定向
    ctx.redirect(`/student?page=1&limit=10`);
  }

  // 把学生信息进行渲染 然后再响应给浏览器
  ctx.render("students.html", { students: newArr });
}

// 创建函数（用 id 查询 一个 学生）
async function studentById(ctx, next) {
  console.log(`查询的学生信息如下：${ctx.params.id}`);
}

// 创建函数（添加 一个 学生）
async function insertStudent(ctx, next) {
  // 渲染并响应页面给浏览器
  ctx.render("add.html");
}

// 创建函数（修改 一个 学生信息）
async function updateStudent(ctx, next) {
  // 渲染并响应页面给浏览器
  ctx.render("update.html");
}

// 创建函数（删除 一个 学生）
async function deleteStudent(ctx, next) {
  // 渲染并响应页面给浏览器
  ctx.render("delete.html");
}

// 暴露 api 函数接口
export const obj = {
  "get /student": students,
  "get /student/:id": studentById,
  "get /studentAdd": insertStudent,
  "get /studentUpdate/:id": updateStudent,
  "get /studentDelete/:id": deleteStudent,
};
